import request from '../../utils/request.js'
import PubSub from 'pubsub-js';
Page({

  /**
   * 页面的初始数据
   */
  data: {
    date: {},
    todayRecommendList: [],
    currentIndex: null
  },

  //跳转播放歌曲页面
  toSong(event){
    const {id:songId,index} = event.currentTarget.dataset;
    this.setData({
      currentIndex: index
    })
    wx.navigateTo({
      url: `/pages/song/song?songId=${songId}`,
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad:async function(options) {
    const date = new Date()
    //年月日
    this.setData({
      date: {
        year: date.getFullYear(),
        month: date.getMonth() + 1,
        day: date.getDate()
      }
    })

    const res = await request('/recommend/songs')
    //每日推荐渲染数据
    const todayRecommendList = res.recommend.map(song => {
      const { id, name, album, artists } = song
      const singers = artists.reduce((prev, artist) => {
        prev.push(artist.name)
        return prev
      }, []).join('')
      return {
        id,
        name,
        picUrl: album.picUrl,
        singers
      }
    })
    this.setData({
      todayRecommendList
    })

    // 订阅switchType,用于接收song页面发来的数据(用户点击的是上一首还是下一首)
    // 注意:PubSub的回调函数的形参,第一个是消息名称,第二个才是真正传递的数据
    PubSub.subscribe('switchType', (msg, data) => {
      console.log('switchType', msg, data)
      /*
        当前通过data中的currentIndex属性,可以知道当前是哪一首歌
          如果需要上一首歌曲数据,就将currentIndex-1,并对todayRecommendList进行读取即可
          如果需要下一首歌曲数据,就将currentIndex+1,并对todayRecommendList进行读取即可
      
       */
      let { currentIndex, todayRecommendList } = this.data;
      if (data === "next") {
        if (currentIndex === todayRecommendList.length - 1) {
          currentIndex = 0;
        } else {
          currentIndex += 1;
        }
      } else {
        if (currentIndex === 0) {
          currentIndex = todayRecommendList.length - 1;
        } else {
          currentIndex -= 1;
        }
      }

      this.setData({
        currentIndex
      })

      const newSongId = todayRecommendList[currentIndex].id;

      PubSub.publish('sendId', newSongId);
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {
    
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function() {

  }
})